package com.example.demo.utils.excel;

import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

public class ExcelListener extends AnalysisEventListener<Map> {
    /**
     * 可以通过实例获取该值
     */
    private List<Map> list = new ArrayList<>();
    public static int vipCount;

    public ExcelListener(Map map) {

    }
    public ExcelListener() {

    }

    @Override
    public void invoke(Map object, AnalysisContext context) {
        //添加到list中
        list.add( object );
        vipCount++;
        //得到当前操作表格的所有行数，由于行数包含了表头，所以需要减一为所有数据的条目数
        Integer a = context.getTotalCount() - 1;
        //读取的行数到行尾时，将剩下的数据全部插入到数据库中
        if (a == vipCount) {
            System.out.println( list );

        }
        //每当list中存储的条目数达到2000条时，批量插入到数据库中，并清空当前list的数据
        if (list.size() % 2000 == 0) {
            System.out.println( list );
//            System.out.println(2);
            list.clear();
        }
    }

    @Override
    public void doAfterAllAnalysed(AnalysisContext context) {
        //非必要语句，查看导入的数据
        System.out.println( "导入的数据条数为: " + list.size() );
    }

    //根据业务自行实现该方法，例如将解析好的dataList存储到数据库中
    private void handleBusinessLogic() {

    }

    public List<Map> getDataList() {
        return list;
    }

    public void setDataList(List<Map> dataList) {
        this.list = dataList;
    }
}
